import uniSass from "@/uni.scss";
import { getVarValue, kebabCase, camelCase } from "./structure";

/**
 * 主题列表和设置放在此处的目的是方便跟着组件库发布
 */

/**
 * 生成主题颜色列表
 * @returns {Object}
 */
const { theme, cameTheme } = (() => {
  const theme = {};
  const cameTheme = {};
  for (const key in uniSass) {
    const varValue = getVarValue(uniSass[key]);
    // 输出颜色变量(记录var函数设置的css变量,备用后期主题切换需求)
    if (varValue.key) {
      theme[varValue.key] = varValue.value;
    }
    // 输出颜色变量的驼峰形式(记录var函数变量和非var函数变量,方便js或vue中使用)
    cameTheme[key] =
      varValue.value || uniSass[key].replace(/%|\?/g, "") + "rpx";
  }
  return { theme, cameTheme };
})();

/**
 * 设置颜色
 * @param {string} key
 * @param {string} value
 */
const setColor = (key, value) => {
  if (theme[kebabCase(key)]) {
    // theme 中包含的才允许被修改(例如字体大小不可修改)
    theme[kebabCase(key)] = value;
    cameTheme[camelCase(key)] = value;
  }
};

export { theme, cameTheme, setColor };
